import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.yhy.device.interfaces.IDeviceService;
import impl.DeviceInterfaceImpl;

/**
 * describe:
 *
 * @author helloworldyu
 * @since  2018/11/5
 */
public class ApiProvider {
	public static void main(String[] args) throws InterruptedException {
		//服务实现类
		IDeviceService deviceService = new DeviceInterfaceImpl();
		// 当前应用配置
		ApplicationConfig application = new ApplicationConfig();
		application.setName("api_provider");
		// 连接注册中心配置
		RegistryConfig registry = new RegistryConfig();
		registry.setProtocol("zookeeper");
		registry.setAddress("ucc.tuya.com:2181");

		// 服务提供者协议配置
		ProtocolConfig protocol = new ProtocolConfig();
		protocol.setName("dubbo");
		protocol.setPort(1234);
		protocol.setThreads(200);

		// 注意：ServiceConfig为重对象，内部封装了与注册中心的连接，以及开启服务端口
		// 服务提供者暴露服务配置
		// 此实例很重，封装了与注册中心的连接，请自行缓存，否则可能造成内存和连接泄漏
		ServiceConfig<IDeviceService> serviceConfig = new ServiceConfig<>();
		serviceConfig.setApplication(application);
		// 多个注册中心可以用setRegistries()
		serviceConfig.setRegistry(registry);
		// 多个协议可以用setProtocols()
		serviceConfig.setProtocol(protocol);
		serviceConfig.setInterface(IDeviceService.class);
		serviceConfig.setRef(deviceService);
		serviceConfig.setVersion("1.0");

		// 暴露及注册服务
		serviceConfig.export();

		while(true){
			Thread.sleep(1000);
		}
	}
}